/*
 * @lc app=leetcode.cn id=13 lang=cpp
 *
 * [13] 罗马数字转整数
 */

// @lc code=start
#include <string>
#include <unordered_map>
using namespace std;
class Solution
{
public:
    int romanToInt(string s)
    {
        /**
         * @brief 
         * 从后面往前看，比他小的相减，大的相加即可
         * 
         */
        char tem;
        char tem1;
        unordered_map<char, int> m = {{'I', 1}, {'V', 5}, {'X', 10}, {'L', 50}, {'C', 100}, {'D', 500}, {'M', 1000}};
        size_t len = s.length() - 1;
        int r = m[s[len]];
        for (int i = len - 1; i > -1; i--)// 注意这里用int，不能用size_t,不会报错，但无法运行
        {
            tem = s[i];
            tem1 = s[i + 1];
            if (m[tem] >= m[tem1])
            {
                r += m[tem];
                continue;
            }
            r -= m[tem];
        }
        return r;
    }
};
// @lc code=end
